package Terminal.Controller;

import Terminal.Entity.Dominio.EWorker;
import Terminal.UI.*;

/**
 * Mantiene una sessione con i dati relativi agli eventi generati dall'utente,
 * come ad esempio l'avvenuta autenticazione.
 * Utilizza il pattern GoF Singleton
 * @author Gruppo 6
 *
 */
public class CSession extends CSessionSubject {

	private static CSession _instanza;
	private EWorker loggato;
	private InterfacciaFactory viewFactory;
	private InterfacciaGestore viewGestore;

	/**
	 * Contruttore PRIVATO della classe
	 */
	private CSession()
	{}
	
	/**
	 * Restituisce l'unica istanza della classe, se esiste
	 * Altrimenti la crea
	 * @return
	 */
	public static CSession instanza()
	{
		if (_instanza == null)
			_instanza = new CSession();
		return _instanza;
	}
	
	public EWorker getLoggato()
	{
		return loggato;
	}
	
	public void setLoggato(EWorker loggato)
	{
		changeNotify();		
		this.loggato = loggato;
	}
	
	public InterfacciaFactory getInterfaceFactory()
	{
		return viewFactory;
	}

	public void setInterfacciaFactory(InterfacciaFactory viewFactory)
	{
		this.viewFactory = viewFactory;
	}
	
	public InterfacciaGestore getGestoreInterfaccia()
	{
		return viewGestore;
	}
	
	public void setInterfacciaGestore(InterfacciaGestore viewGestore)
	{
		this.viewGestore = viewGestore;
	}
}
